home *** CD-ROM | disk | FTP | other *** search
/ Super CD / Super CD.iso / teach / eng-word / editor.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1983-01-26  |  15.8 KB  |  392 lines

  1. 10                   'COPYRIGHT 1983 DAVIDSON  ASSOCIATES
  2. 20                   'ALL RIGHTS RESERVED
  3. 30  GOSUB 3400:      'INIT FOR COLD START
  4. 36  L = 1:           'CHAIN ENTRY FROM WORD ATTACK
  5. 38  GOSUB 3820:      'INSERT DATA DISK
  6. 40  GOSUB 260:       'INITIALIZE SCREEN
  7. 70  WHILE B$ <> "Q"
  8. 80    GOSUB 3150
  9. 90    LOCATE 23,LEFT-4: PRINT "New line";L;"    ";: LOCATE INLINE,LEFT-5: PRINT       L;: LOCATE ,LEFT: PRINT CHR$(34);
  10. 100    LOCATE ,LEFT
  11. 110    POKE &H417,&H10
  12. 120    INPUT "", A$: GOSUB 3180
  13. 130    GOSUB 3090: 'CHECK LENGTH
  14. 140    IF LEFT$(A$,1) = "." THEN GOSUB 410: COMMAND = TRUE ELSE COMMAND = FALSE
  15. 150    IF NOT COMMAND AND L < 201 THEN ARRAY$(L) = A$: L = L + 1
  16. 160  WEND
  17. 170  COLOR 7,0: CLS: LOCATE 4,3-20*MONO
  18. 180  PRINT "To re-run WORD ATTACK!, insert the"
  19. 190  PRINT: LOCATE ,3-20*MONO: PRINT "program diskette, type RUN ";CHR$(34);         "ATTACK"
  20. 200  PRINT: LOCATE ,3-20*MONO:PRINT "and press the ENTER key."
  21. 210  LOCATE 12,3-20*MONO: PRINT "To  re-enter  the editor with your": PRINT
  22. 220  LOCATE ,3-20*MONO: PRINT "file  intact,  type   GOTO 40  and": PRINT
  23. 230  LOCATE ,3-20*MONO: PRINT "press  the  ENTER  key.": PRINT
  24. 240  END
  25. 250  '-----------------------INITIALIZE AND CLEAR----------------------
  26. 260  COLOR FG,BG: CLS: B$ = "": TRUE = -1: FALSE = 0: LEFT = 6-20*MONO
  27. 270  I = LEFT - 2: INLINE = 19: ENDD$ = CHR$(174): IF DD=1 THEN DIR$ ="*.*": DD$     = "" ELSE DIR$ = "B:*.*": DD$ = "B:"
  28. 280  CLEARR$ = STRING$(39-24*MONO,32)
  29. 290  LINEE$ = STRING$(38-25*MONO,196): NAMEE$=""
  30. 300  GOSUB 3180
  31. 310  LOCATE 2,I: PRINT "  * * *  WORD ATTACK EDITOR  * * *"
  32. 320  LOCATE 4,I: PRINT "Copyright 1983 Davidson & Associates": PRINT
  33. 330  PRINT: LOCATE ,I: PRINT "The prompt line at the bottom of the"
  34. 340  PRINT: LOCATE ,I: PRINT "screen displays the editor commands."
  35. 350  PRINT: LOCATE ,I: PRINT "For help,  use the .h  command.  Use"
  36. 360  PRINT: LOCATE ,I: PRINT "the  ";CHR$(26);"  key at the right side of the"
  37. 370  PRINT: LOCATE ,I: PRINT "keyboard to copy over the quote mark"
  38. 380  PRINT: LOCATE ,I: PRINT "at the beginning of each line."
  39. 390  RETURN
  40. 400  '--------------------CHANGE MODE---------------------------------
  41. 410  B$ = MID$ (A$,2,1): IF B$ = "" THEN BLANK = TRUE ELSE BLANK = FALSE
  42. 420  WHILE NOT BLANK
  43. 430    A= ASC (B$): IF A > 90 THEN B$ = CHR$(A-32)
  44. 440    IF B$ = "E" THEN GOSUB 570
  45. 450    IF B$ = "P" THEN GOSUB 820
  46. 460    IF B$ = "L" THEN GOSUB 1080
  47. 470    IF B$ = "I" THEN GOSUB 1370
  48. 480    IF B$ = "D" THEN GOSUB 1630
  49. 490    IF B$ = "S" THEN GOSUB 1870
  50. 500    IF B$ = "G" THEN GOSUB 2580
  51. 510    IF B$ = "C" THEN GOSUB 2960
  52. 520    IF B$ = "H" THEN GOSUB 3210
  53. 530    BLANK = TRUE
  54. 540  WEND
  55. 550  RETURN
  56. 560  '-----------------------EDIT LINE--------------------------------
  57. 570  VALID = TRUE
  58. 580  IF L = 1 THEN LOCATE INLINE-1,LEFT+11: PRINT "No lines in memory"
  59. 590  WHILE VALID AND L > 1
  60. 600    LN = LEN (A$)
  61. 610    IF LN > 2 THEN E$ = RIGHT$(A$,LN-2)
  62. 620    LOCATE 25,LEFT-4: PRINT STRING$(38,32);
  63. 630    IF LN < 3 THEN LOCATE INLINE-1,LEFT+8:INPUT "Edit which line?     ",E$
  64. 640    E$ = LEFT$(E$,4)
  65. 650    E% = VAL (E$): E = E%
  66. 660    IF E$ = "" OR E < 1 OR E > L - 1 THEN VALID = FALSE: IF E$ <> "" THEN           LOCATE INLINE-1,LEFT+8:PRINT "Invalid line number"
  67. 670    WHILE VALID
  68. 680      GOSUB 3180
  69. 690      IF LEN(ARRAY$(E)) < 34 THEN ARRAY$(E) = ARRAY$(E) +                             STRING$(34-LEN(ARRAY$(E)),32)
  70. 700      IF MONO THEN ARRAY$(E) = ARRAY$(E) + STRING$(20,32)
  71. 710      LOCATE 25,LEFT-4: PRINT STRING$(38,32);
  72. 720      LOCATE 23,LEFT-4: PRINT "Edit line";E: LOCATE INLINE,LEFT: PRINT CHR$           (34); ARRAY$(E)
  73. 730      LOCATE INLINE,LEFT-5: PRINT E;: LOCATE ,LEFT: INPUT "",A$: GOSUB 3180
  74. 740      GOSUB 3090: 'LENGTH CHECK AND SPACES STRIPPER
  75. 750      ARRAY$(E) = A$
  76. 760      VALID = FALSE
  77. 770    WEND:                  'VALID LINE NUMBER & NOT FINISHED?
  78. 780  WEND:                    'LINES IN MEMORY?
  79. 790  GOSUB 3180
  80. 800  RETURN
  81. 810  '-----------------------PRINT OUT FILE-------------------------------
  82. 820  VALID = TRUE: FINISHED = FALSE
  83. 830  IF L = 1 THEN LOCATE INLINE-1,LEFT+11: PRINT "No lines in memory"
  84. 840  WHILE VALID AND L > 1 AND NOT FINISHED
  85. 850    LN = LEN(A$): IF LN > 2 THEN E$ = RIGHT$(A$,LN-2) ELSE E$ = "1"
  86. 860    E$ = LEFT$(E$,4)
  87. 870    E% = VAL(E$): E = E%
  88. 880    IF E < 1 OR E > L-1 THEN VALID = FALSE: LOCATE INLINE-1,LEFT+11:PRINT           "Invalid line number"
  89. 890    WHILE VALID AND NOT FINISHED
  90. 900      LOCATE 25,LEFT-4: PRINT "               ENTER                  ";
  91. 910      ON ERROR GOTO 1030
  92. 920      WHILE E < L AND NOT FINISHED
  93. 930        LPRINT E;"  ";: IF E < 100 THEN LPRINT " ";: IF E < 10 THEN  LPRINT             " ";
  94. 940        LOCATE ,6:LPRINT ARRAY$(E): E = E + 1: A$ = INKEY$: IF A$ = CHR$(13)            THEN FINISHED = TRUE
  95. 950      WEND:                  'FINISHED?
  96. 960      ON ERROR GOTO 0
  97. 970      VALID = FALSE
  98. 980    WEND:                    'VALID LINE NUMBER & NOT FINISHED?
  99. 990  WEND:                      'LINES IN MEMORY?
  100. 1000  GOSUB 3180
  101. 1010  RETURN
  102. 1020  '--------------------------PRINTER ERROR------------------------------
  103. 1030  RESTORE 1060: ERRNUMBER = 0: FINISHED = TRUE: GOSUB 3180
  104. 1040  READ ERRNUMBER,ERRMESSAGE$:IF ERR <> ERRNUMBER AND ERRNUMBER <> 99 THEN         1040
  105. 1050  LOCATE INLINE,LEFT+1: PRINT ERRMESSAGE$: GOSUB 3180: RESUME 950
  106. 1060  DATA 24,Printer timeout error,27,Printer is not on,57,Printer I/O error 57,     68,Printer unavailable,99,Printer error
  107. 1070  '-------------------------LIST THE FILE------------------------------
  108. 1080  VALID = TRUE: E = 1: FINISHED = FALSE: GO = TRUE
  109. 1090  IF L = 1 THEN LOCATE INLINE-1,LEFT+11: PRINT "No lines in memory"
  110. 1100  WHILE L > 1 AND E < L AND NOT FINISHED
  111. 1110    LN = LEN (A$): E$ = ""
  112. 1120    FOR I = 22 TO 25: LOCATE I,1-8*MONO: PRINT CLEARR$;: NEXT
  113. 1130    IF LN > 2 THEN E$ = RIGHT$(A$,LN-2): E$ = LEFT$(E$,4): E = VAL(E$) ELSE         E = 1
  114. 1140    IF E > L-1 THEN LOCATE INLINE-1,LEFT+8: PRINT "Invalid line number":E= 1
  115. 1150    IF E < 1 THEN E = 1
  116. 1160    LOCATE 25,LEFT-4: PRINT "         SPACEBAR      ENTER          ";
  117. 1170    WHILE E < L AND NOT FINISHED
  118. 1180      LOCATE 24,1: PRINT
  119. 1190      IF MONO THEN LOCATE INLINE-1,61: PRINT ENDD$
  120. 1200      LOCATE INLINE+1,LEFT-5: PRINT E
  121. 1210      LOCATE INLINE+1,LEFT+1: PRINT ARRAY$(E);: IF MONO THEN LOCATE ,61:              PRINT ENDD$
  122. 1220      A$ = INKEY$
  123. 1230      IF A$ = " " THEN GO = NOT GO
  124. 1240      IF A$ = CHR$(13) THEN FINISHED = TRUE ELSE FINISHED = FALSE
  125. 1250      WHILE NOT GO AND NOT FINISHED
  126. 1260        A$ = INKEY$
  127. 1270        IF A$ = " " THEN GO = NOT GO
  128. 1280        IF A$ = CHR$(13) THEN FINISHED = TRUE
  129. 1290      WEND                                      'TERMINATE PAUSE?
  130. 1300      E =E + 1: FOR I = 1 TO 70: NEXT
  131. 1310    WEND:                                       'OUT OF LINES OR QUIT?
  132. 1320    LOCATE 24: PRINT: PRINT
  133. 1330  WEND:                                         'LINES IN MEMORY?
  134. 1340  GOSUB 3180
  135. 1350  RETURN
  136. 1360  '-----------------------INSERT LINE--------------------------------
  137. 1370  VALID = TRUE: FINISHED = FALSE
  138. 1380  IF L = 1 THEN LOCATE INLINE-1,LEFT+11: PRINT "No lines in memory"
  139. 1390  WHILE L > 1 AND VALID AND NOT FINISHED
  140. 1400    LN = LEN (A$)
  141. 1410    LOCATE 25,LEFT-4: PRINT STRING$(38,32);
  142. 1420    IF LN > 2 THEN E$ = RIGHT$(A$,LN-2)
  143. 1430    IF LN < 3 THEN LOCATE INLINE-1,LEFT+8: INPUT "Insert which line?   ",E$
  144. 1440    E$ = LEFT$(E$,4): E% = VAL(E$): E = E%
  145. 1450    IF E$ = "" OR E < 1 OR E > L-1 THEN VALID = FALSE: IF E$<>"" THEN LOCATE        INLINE-1,LEFT+8: PRINT "Invalid line number"
  146. 1460    WHILE VALID AND NOT FINISHED
  147. 1470      LOCATE 25,LEFT-4: PRINT "               .q(uit                 ";
  148. 1480      GOSUB 3180
  149. 1490      WHILE NOT FINISHED
  150. 1500        LOCATE 23,LEFT-4: PRINT "Insert line";E;
  151. 1510        LOCATE INLINE,LEFT-5: PRINT E;: LOCATE ,LEFT: PRINT CHR$(34);: LOCATE          ,LEFT: INPUT"",A$: GOSUB 3180
  152. 1520        GOSUB 3090:' LENGTH CHECK & SPACE STRIPPER
  153. 1530        IF A$ = ".Q" OR A$ = ".q" THEN FINISHED = TRUE
  154. 1540        IF NOT FINISHED THEN FOR I = L - 1 TO E STEP -1: ARRAY$(I+1) = ARRAY$           (I): NEXT
  155. 1550        IF NOT FINISHED THEN ARRAY$(E) = A$: L = L + 1: E= E + 1
  156. 1560        IF L > 200 THEN FINISHED = TRUE
  157. 1570      WEND:                       'FINISHED?
  158. 1580    WEND:                         'INVALID LINE?
  159. 1590  WEND                            'LINES IN MEMORY?
  160. 1600  GOSUB 3180
  161. 1610  RETURN
  162. 1620  -----------------------DELETE LINE-------------------------------
  163. 1630  VALID = TRUE
  164. 1640  IF L = 1 THEN LOCATE INLINE-1,LEFT+11: PRINT "No lines in memory"
  165. 1650  WHILE L > 1 AND VALID
  166. 1660    LN = LEN(A$)
  167. 1670    LOCATE 25,LEFT-4: PRINT "                                      ";
  168. 1680    IF LN > 2 THEN E$ = RIGHT$(A$,LN-2)
  169. 1690    IF LN < 3 THEN LOCATE INLINE-1,LEFT+8: INPUT "Delete which line?   ",E$
  170. 1700    E$ = LEFT$(E$,4)
  171. 1710    E% = VAL(E$): E = E%
  172. 1720    IF E < 1 OR E > L-1 OR E$ = "" THEN VALID = FALSE: IF E$ <> "" THEN             LOCATE INLINE-1,LEFT+8: PRINT "Invalid line number"
  173. 1730    WHILE VALID
  174. 1740      LOCATE INLINE-1,LEFT+8: PRINT "Delete this? (Y/N)         ": GOSUB 3180         : LOCATE INLINE,LEFT-5: PRINT E;: LOCATE ,LEFT+1: PRINT ARRAY$(E)
  175. 1750      A$ = ""
  176. 1760      WHILE A$ <> "Y" AND A$ <> "y" AND A$ <> "N" AND A$ <> "n"
  177. 1770        A$ = INKEY$
  178. 1780      WEND
  179. 1790      GOSUB 3180
  180. 1800      IF A$ = "y" OR A$ = "Y" THEN FOR I = E TO L-1: ARRAY$(I) = ARRAY$(I+1):         NEXT: L = L - 1
  181. 1810      VALID = FALSE
  182. 1820    WEND:                        'VALID LINE AND NOT FINISHED?
  183. 1830  WEND:                          'LINES IM MEMORY?
  184. 1840  GOSUB 3180
  185. 1850  RETURN
  186. 1860  -----------------------SAVE FILE TO DISK---------------------------
  187. 1870  BADFILENAME = FALSE: FINISHED = FALSE: DIRECTORY = FALSE: DISKERROR =FALSE:     E$ = "": ON ERROR GOTO 2340
  188. 1880  IF L = 1 THEN LOCATE INLINE-1,LEFT+11: PRINT "No lines in memory"
  189. 1890  WHILE L > 1 AND NOT BADFILENAME AND NOT FINISHED
  190. 1900    WHILE RIGHT$(A$,1) = " "
  191. 1910      A$ = LEFT$(A$,LEN(A$)-1)
  192. 1920    WEND
  193. 1930    LN = LEN(A$)
  194. 1940    IF LN > 2 THEN E$ = RIGHT$(A$,LN-2)
  195. 1950    IF E$ = ".d" OR E$ = ".D" THEN E$ = "": NAMEE$ = "": DIRECTORY = TRUE
  196. 1960    WHILE E$ = "" AND NOT FINISHED:      'NO FILE NAME GIVEN
  197. 1970      GOSUB 3180
  198. 1980      WHILE NAMEE$ <> "" AND E$ = ""
  199. 1990        LOCATE INLINE,LEFT: PRINT "Save as ";NAMEE$;"? (Y/N)": GOSUB 3180
  200. 2000          WHILE A$ <> "Y" AND A$ <> "y" AND A$ <> "N" AND A$ <> "n"
  201. 2010            A$ = INKEY$
  202. 2020          WEND
  203. 2030        IF A$ = "Y" OR A$ = "y" THEN E$ = NAMEE$
  204. 2040        IF A$ = "N" OR A$ = "n" THEN NAMEE$ = "": E$ = ""
  205. 2050      WEND
  206. 2060      WHILE (E$ = "" AND NOT FINISHED) OR DIRECTORY
  207. 2070        IF DIRECTORY THEN LOCATE 22,1-8*MONO: PRINT CLEARR$: LOCATE ,                   1-8*MONO: PRINT CLEARR$;: LOCATE 21,1: FILES DIR$: LOCATE 24: FOR               I= 1 TO 6: PRINT :NEXT: GOSUB 3180: DIRECTORY = FALSE
  208. 2080        LOCATE 25,LEFT-4: PRINT "             .d(irectory              ";
  209. 2090        LOCATE INLINE,LEFT+1: INPUT "Save file name?     ",A$
  210. 2100        GOSUB 3090: E$ = A$:' LENGTH CHECK AND SPACE REMOVER
  211. 2110        IF E$ = ".d" OR E$ = ".D" THEN DIRECTORY = TRUE ELSE DIRECTORY=FALSE
  212. 2120        IF E$ = "" THEN FINISHED = TRUE
  213. 2130        IF NOT FINISHED THEN GOSUB 3180
  214. 2140      WEND:                               'GOT SOME NAME OR FINISHED?
  215. 2150    WEND
  216. 2160    GOSUB 2400: 'CHECK FILE NAME
  217. 2170    WHILE NOT FINISHED AND NOT BADFILENAME
  218. 2180      OPENING = TRUE: F$ = DD$ + E$
  219. 2190      OPEN F$ FOR OUTPUT AS #1
  220. 2200      OPENING = FALSE: I = 1
  221. 2210      WHILE I < L AND NOT FINISHED
  222. 2220        PRINT #1,CHR$(34);ARRAY$(I);CHR$(34): I = I + 1
  223. 2230      WEND
  224. 2240      IF NOT DISKERROR THEN NAMEE$=E$
  225. 2250      CLOSE
  226. 2260      ON ERROR GOTO 0
  227. 2270      FINISHED = TRUE
  228. 2280    WEND
  229. 2290  WEND
  230. 2300  GOSUB 3180
  231. 2310  ON ERROR GOTO 0
  232. 2320  RETURN
  233. 2330  '----------------------DISK OUTPUT ERROR--------------------------
  234. 2340  RESTORE 2380: FINISHED = TRUE: DISKERROR = TRUE
  235. 2350  READ ERRNUMBER,ERRMESSAGE$:IF ERR <> ERRNUMBER AND ERRNUMBER<>99 THEN 2350
  236. 2360  IF NOT DIRECTORY THEN GOSUB 3180
  237. 2370  LOCATE INLINE,LEFT+1: PRINT ERRMESSAGE$: BEEP: GOSUB 3180: IF DIRECTORY         THEN DIRECTORY = FALSE: RESUME 2140 ELSE IF OPENING THEN RESUME 2240 ELSE       RESUME 2230
  238. 2380  DATA 57,I/O error,61,Disk is full,70,Disk write protected,71,                   Disk not ready,72,Disk media error,99,Disk error
  239. 2390  ----------------------CHECK FILE NAME----------------------------
  240. 2400  BADFILENAME = FALSE: E = LEN(E$): DONE = FALSE
  241. 2410  IF E = 0 THEN BADFILENAME = -1: GOSUB 3180
  242. 2420  WHILE LEFT$(E$,1) = "." AND NOT BADFILENAME
  243. 2430    E = LEN(E$)
  244. 2440    IF E > 1 THEN E$ = RIGHT$(E$,E-1) :E = E - 1  ELSE BADFILENAME = -1
  245. 2450  WEND
  246. 2460  WHILE NOT BADFILENAME AND NOT DONE
  247. 2470    IF E > 12 THEN E = 12: E$ = LEFT$(E$,12)
  248. 2480    FOR I = 1 TO E
  249. 2490      B = ASC(MID$(E$,I,1))
  250. 2500      IF B > 126 OR B < 32 OR B = 34 OR B = 42 OR B = 43 OR B = 47 OR (B > 57         AND B< 64) OR B = 91 OR B = 93 OR B = 124 THEN BADFILENAME = -1: C = B
  251. 2510    NEXT
  252. 2520    IF BADFILENAME THEN GOSUB 3180:LOCATE INLINE,LEFT: PRINT CHR$(C);               " is an illegal character"
  253. 2530    IF BADFILENAME THEN GOSUB 3180
  254. 2540    DONE = TRUE
  255. 2550  WEND
  256. 2560  RETURN
  257. 2570  '------------------------GET FILE FROM DISK-----------------------
  258. 2580  BADFILENAME = FALSE: FINISHED = FALSE: DIRECTORY = FALSE: DISKERROR= FALSE:     E$ = "": ON ERROR GOTO 2890
  259. 2590  LN = LEN(A$)
  260. 2600  IF LN > 2 THEN E$ = RIGHT$(A$,LN-2) ELSE E$ = ""
  261. 2610  IF E$ = ".d" OR E$ = ".D" THEN E$ = " ": DIRECTORY = TRUE
  262. 2620  WHILE (E$ = "" AND NOT FINISHED) OR DIRECTORY:    'NO FILE NAME GIVEN
  263. 2630    GOSUB 3180
  264. 2640    IF DIRECTORY THEN LOCATE 22,1-8*MONO: PRINT CLEARR$: LOCATE,1-8*MONO:           PRINT CLEARR$;: LOCATE 21,1:FILES DIR$: LOCATE 24: FOR I = 1 TO 6: PRINT:       NEXT: GOSUB 3180: DIRECTORY = FALSE
  265. 2650    LOCATE 25,LEFT-4: PRINT "            .d(irectory               ";
  266. 2660    LOCATE INLINE,LEFT: INPUT "Get file name?  ",A$
  267. 2670    GOSUB 3090: E$ = A$:' LENGTH CHECK AND SPACE REMOVER
  268. 2680    IF E$ = ".D" OR E$ = ".d" THEN DIRECTORY = TRUE
  269. 2690    IF E$ = "" THEN FINISHED = TRUE
  270. 2700    IF NOT FINISHED THEN GOSUB 3180
  271. 2710  WEND:                                   'GOT A NAME OR FINISHED?
  272. 2720  GOSUB 2400: 'CHECK FILE NAME
  273. 2730  WHILE NOT FINISHED AND NOT BADFILENAME
  274. 2740    OPENING = TRUE: F$ = DD$ + E$
  275. 2750    OPEN F$ FOR INPUT AS #1
  276. 2760    OPENING = FALSE
  277. 2770    L = 1
  278. 2780    WHILE NOT EOF(1)
  279. 2790      INPUT#1, ARRAY$(L): L = L + 1
  280. 2800    WEND
  281. 2810    IF NOT DISKERROR THEN NAMEE$= E$
  282. 2820    CLOSE
  283. 2830    FINISHED = TRUE
  284. 2840  WEND
  285. 2850  GOSUB 3180
  286. 2860  ON ERROR GOTO 0
  287. 2870  RETURN
  288. 2880  '--------------------------DISK INPUT ERROR----------------------
  289. 2890  RESTORE 2930: DISKERROR = TRUE: FINISHED = TRUE
  290. 2900  READ ERRNUMBER,ERRMESSAGE$:IF ERR<>ERRNUMBER AND ERRNUMBER <> 99 THEN 2900
  291. 2910  IF DIRECTORY AND ERR = 53 THEN ERRMESSAGE$ = "No files present"
  292. 2920  IF NOT DIRECTORY THEN GOSUB 3180
  293. 2930  LOCATE INLINE,LEFT+1: PRINT ERRMESSAGE$: BEEP: GOSUB 3180: IF DIRECTORY         THEN DIRECTORY = FALSE: RESUME 2710 ELSE IF OPENING THEN RESUME 2840 ELSE       RESUME 2800
  294. 2940  DATA 53,File not found,57,I/O error 57,64,Bad file name,71,Disk not ready,      72,Disk media error 72,99,Disk input error
  295. 2950  '---------------------CLEAR MEMORY-------------------------------
  296. 2960  A$ = ""
  297. 2970  IF L = 1 THEN A$="Y"
  298. 2980  WHILE A$ = ""
  299. 2990    GOSUB 3180
  300. 3000    LOCATE INLINE,LEFT+1: PRINT "Destroy the file in memory? (Y/N)"
  301. 3010    GOSUB 3180
  302. 3020    WHILE A$ <> "y" AND A$ <> "Y" AND A$ <> "N" AND A$ <> "n"
  303. 3030      A$ = INKEY$
  304. 3040    WEND
  305. 3050  WEND
  306. 3060  IF A$ = "Y" OR A$ = "y" THEN GOSUB 260 :L=1: ELSE GOSUB 3180
  307. 3070  RETURN
  308. 3080  '------------------LENGTH CHECK-------------------------------
  309. 3090  IF LEN(A$) > 34 THEN A$ = LEFT$(A$,34):LOCATE INLINE,LEFT-5: PRINT              STRING$(40,32);: IF MONO THEN LOCATE INLINE-1,LEFT+1: PRINT A$;                 STRING$(20,32);: LOCATE INLINE-1,61: PRINT ENDD$
  310. 3100  WHILE RIGHT$(A$,1) = " "
  311. 3110    A$ = LEFT$(A$,LEN(A$)-1)
  312. 3120  WEND
  313. 3130  RETURN
  314. 3140  '-------------------MAIN PROMPT LINE------------------------------
  315. 3150  LOCATE 25,LEFT-4: PRINT ".e  .l  .d  .i  .s  .g  .p  .c  .q  .h";
  316. 3160  RETURN
  317. 3170  --------------------SCROLL SCREEN---------------------------------
  318. 3180  LOCATE 23,1-8*MONO: PRINT CLEARR$: LOCATE 22,2-7*MONO: PRINT CLEARR$:           LOCATE 24,1: PRINT: LOCATE 22,2-7*MONO: PRINT LINEE$: IF MONO THEN LOCATE       INLINE-1,61: PRINT ENDD$
  319. 3190  RETURN
  320. 3200  '---------------HELP SCREEN-----------------------------
  321. 3210  CLS: GOSUB 3180: GOSUB 3150
  322. 3220  I = 2-20*MONO
  323. 3230  LOCATE 1,I: PRINT "The commands in this editor are:": PRINT
  324. 3240  LOCATE ,I: PRINT ".e   edit a line"
  325. 3250  LOCATE ,I: PRINT ".l   list the file"
  326. 3260  LOCATE ,I: PRINT ".d   delete a line"
  327. 3270  LOCATE ,I: PRINT ".i   insert lines"
  328. 3280  LOCATE ,I: PRINT ".s   save file to disk"
  329. 3290  LOCATE ,I: PRINT ".g   get file from disk"
  330. 3300  LOCATE ,I: PRINT ".p   print file on printer"
  331. 3310  LOCATE ,I: PRINT ".c   clear editor for new file"
  332. 3320  LOCATE ,I: PRINT ".q   quit the editor"
  333. 3330  LOCATE ,I: PRINT ".h   help screen"
  334. 3340  PRINT: LOCATE ,I: PRINT "Use the ";CHR$(26);"  key on the right side of"
  335. 3350  LOCATE ,I: PRINT "the keyboard to copy over the quote"
  336. 3360  LOCATE ,I: PRINT "mark at the beginning of each line."
  337. 3370  LOCATE ,I:PRINT "See the manual for more information."
  338. 3380  RETURN
  339. 3390  '----COLD START INITIALIZATION------
  340. 3400  SCREEN 0,0,0,0: DEF SEG = 0: DIM ARRAY$(202): KEY OFF
  341. 3410  IF (PEEK (&H410) AND &H30) = &H30 THEN MONO =-1: FG=0: BG=7: WIDTH 80 ELSE      MONO = 0: FG = 7: BG = 0: WIDTH 40
  342. 3420  COLOR FG,BG
  343. 3430  GOSUB 3780:I = 5-15*MONO
  344. 3440  LOCATE 3,I-2: PRINT "Which monitor do you have?"
  345. 3450  LOCATE 5,I: PRINT "1> IBM Monochrome Display": PRINT
  346. 3460  LOCATE ,I: PRINT "2> TV  or  other  monitor": PRINT
  347. 3470  LOCATE ,I: PRINT "Please press 1 or 2";
  348. 3480  WHILE A$ <> ""
  349. 3490    A$ = INKEY$
  350. 3500  WEND
  351. 3510  WHILE A$ <> "1" AND A$ <> "2"
  352. 3520    A$=INKEY$
  353. 3530  WEND
  354. 3540  IF A$ ="2" THEN W = 40: MONO = 0 ELSE W = 80: MONO = -1
  355. 3550  LOCATE 12,I-2: PRINT "Select the display color:"
  356. 3560  LOCATE 14,I: PRINT "1> Dark printing/light background": PRINT
  357. 3570  LOCATE ,I: PRINT "2> Light printing/dark background": PRINT
  358. 3580  WHILE A$ <> ""
  359. 3590    A$ = INKEY$
  360. 3600  WEND
  361. 3610  LOCATE ,I: PRINT "Please press 1 or 2"
  362. 3620  WHILE A$ <> "1" AND A$ <> "2"
  363. 3630    A$ = INKEY$
  364. 3640  WEND
  365. 3650  IF A$ = "1" THEN FG = 0: BG = 7 ELSE FG = 7: BG = 0
  366. 3660  WHILE A$ <> ""
  367. 3670    A$ = INKEY$
  368. 3680  WEND
  369. 3690  LOCATE 21,I-2: PRINT "Do you have one disk": PRINT
  370. 3700  LOCATE ,I: PRINT "drive or two? (press 1 or 2)"
  371. 3710  WHILE A$ <> "1" AND A$ <> "2"
  372. 3720    A$ = INKEY$
  373. 3730  WEND
  374. 3740  DD = VAL(A$)
  375. 3750  COLOR FG,BG: WIDTH W
  376. 3760  RETURN
  377. 3770  '----MENU BORDER----
  378. 3780  CLS: LOCATE 1,1,0: FOR I=1 TO 900: NEXT: LF=1-MONO: R = 39-40*MONO: A$ =        STRING$ (37-39*MONO,205)
  379. 3790  LOCATE 1,LF: PRINT CHR$(201);A$;CHR$(187): FOR I=2 TO 24: LOCATE I,LF:          PRINT CHR$(186);: LOCATE ,R: PRINT CHR$(186);: NEXT: LOCATE 25,LF: PRINT        CHR$(200);A$;CHR$(188);
  380. 3800  RETURN
  381. 3810  '----CHANGE DISKS----
  382. 3820  GOSUB 3780
  383. 3830  IF DD = 2 THEN LOCATE 6,17-20*MONO: PRINT "Please"
  384. 3840  IF DD=1 THEN LOCATE 8,4-20*MONO:PRINT "Please remove the program diskette"
  385. 3850  LOCATE 14+4*(DD=2),9-20*MONO: PRINT "Insert the data diskette": IF DD = 2       THEN LOCATE 14,12-20*MONO: PRINT "into disk drive B"
  386. 3860  LOCATE 23,7-20*MONO
  387. 3870  PRINT "Press space bar to continue"
  388. 3880  WHILE A$ <> " "
  389. 3890    A$ = INKEY$
  390. 3900  WEND
  391. 3910  RETURN
  392.